const ResultVo = require('@vo/ResultVo')
/**
 * 设置方法的请求类型
 * @param {*} fun
 * @param {*} type
 * @param {*} requestVo 请求参数实体类 用于生成接口文档的请求参数部分
 * @param {*} responseVo 返回实体类 用于生成接口文档返回参数部分
 * @param {*} desc 接口描述
 */
function renderRequestType(fun, type = 'GET', requestVo, responseVo, desc) {
  if (!fun) {
    throw new Error('fun is require')
  }
  fun.prototype.customRequestType = type
  if (requestVo && requestVo.prototype.swaggerDescription) {
    fun.prototype.requestVo = requestVo.prototype.swaggerDescription
  }
  if (responseVo && responseVo.prototype.swaggerDescription) {
    fun.prototype.responseVo = {
      ...ResultVo.prototype.swaggerDescription,
      data: {
        ...responseVo.prototype.swaggerDescription
      }
    }
  } else {
    fun.prototype.responseVo = {
      ...ResultVo.prototype.swaggerDescription
    }
  }
  if (desc) {
    fun.prototype.desc = desc
  }
  return fun
}

exports.renderRequestType = renderRequestType
